import type { Next } from 'vona';
import type { IDecoratorSocketConnectionOptions, ISocketConnectionExecute } from 'vona-module-a-socket';
import type { WebSocket } from 'ws';
import { BeanBase } from 'vona';
import { SocketConnection } from 'vona-module-a-socket';

export interface ISocketConnectionOptions<%=argv.beanNameCapitalize%> extends IDecoratorSocketConnectionOptions {}

@SocketConnection<ISocketConnectionOptions<%=argv.beanNameCapitalize%>>()
export class SocketConnection<%=argv.beanNameCapitalize%> extends BeanBase implements ISocketConnectionExecute {
  async enter(_ws: WebSocket, _options: ISocketConnectionOptions<%=argv.beanNameCapitalize%>, next: Next): Promise<void> {
    // next
    return next();
  }

  async exit(_ws: WebSocket, _options: ISocketConnectionOptions<%=argv.beanNameCapitalize%>, next: Next): Promise<void> {
    // next
    return next();
  }
}
